package others;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TestOffer2_57 {
    /**
     * 剑指 Offer 57 - II. 和为s的连续正数序列
     * 输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。
     * 序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。
     * 输入：target = 9
     * 输出：[[2,3,4],[4,5]]
     */

    public static int[][] findContinuousSequence(int target) {

        int i = 1;
        int j = 2;
        int sum = 3;
        List<int[]> res = new ArrayList<>();
        while (i < j) {
            if (sum == target) {
                int[] tmp = new int[j - i + 1];
                for (int k = i; k <= j; k++) {
                    tmp[k - i] = k;
                }
                res.add(tmp);
                sum -= i;
                i++;
            }
            else if (sum > target) {
                sum -= i;
                i++;
            } else if (sum < target) {
                j++;
                sum += j;
            }
        }
        return res.toArray(new int[0][]);

    }

    public static void main(String[] args) {
        int a = 9;
        int[][] continuousSequence = findContinuousSequence(9);
        System.out.println(Arrays.toString(continuousSequence));
    }
}
